Basys 3 で Hello World
三ヶ月間が間が空くと何も覚えていないので、リハビリがてらでBasys3をLチカさせてみた。
Basys 3 とは?
XilinxのFPGAチップの載ったFPGAボード
https://www.amazon.co.jp/dp/B00NUE1WOG/
Amazonで22000円するのね...
メルカリで8000円で買えたのはラッキーだった
VirtualBox上で作業してるので、事前にBaysy3に繋いだUSBを認識できるようにしておく
https://gyazo.com/439dd18f3c6a27ec210d2f5ec6a10c92
UbuntuへVivadoをインストール
ボードファイルをインストール
zipアーカイブをダウンロードして展開
https://github.com/Digilent/vivado-boards/archive/master.zip?_ga=2.111146252.865438274.1595747721-1655579317.1595747721
上記で展開したbasys3ディレクトリをVivadoのboard_filesディレクトリへコピー
~/Desktop/vivado-boards-master/new/board_files/basys3 ディレクトリを /tools/Xilinx/Vivado/2020.1/data/boards/board_files/ へコピーする
(Windowsの場合は C:\Xilinx\Vivado\2020.1\data\boards\board_files へコピーする)
https://gyazo.com/7d01358c529209ff3fa14bc3c44aa7e1
ここに Basys3 が出てくればOK
https://gyazo.com/9e9e1035c9dd654c025b3f8e2c5aa46c
Basys3の制約ファイル(xdcファイル)をダウンロードしてくる
制約ファイルのテンプレがあると便利なのでダウンロードしてくる
Github
https://github.com/Digilent/digilent-xdc
Basys-3-Master.xdc
https://raw.githubusercontent.com/Digilent/digilent-xdc/master/Basys-3-Master.xdc
Lチカしてみる
code:blink.sv
module blink(
input sw0,
output led0
);
assign led0 = sw0;
endmodule
code:blink.xdc
set_property PACKAGE_PIN V17 get_ports {sw0}
set_property IOSTANDARD LVCMOS33 get_ports {sw0}
set_property PACKAGE_PIN U16 get_ports {led0}
set_property IOSTANDARD LVCMOS33 get_ports {led0}
合成&書き込み(program)する
メニューから「Flow - Run Synthesis」する
続けて「Run Implemantation」する
続けて「Open Implemented Design」する
Implementationが終わったら、メニューから「Flow / Generate Bitstream」を選択
Bitstreamの生成が終わったら、メニューから「Flow / Hardware Manager」を選択
「No hardware target is open. 」が表示されていたら、横にある「Open target」を押すとターゲットデバイスが認識される(気がする)
「Program device」が表示されていたらそれを押す
動作確認
Basys3でsw0をオンにした時にled0が点灯すればOK。お疲れ様でした。
作業中に発生したトラブル
デバイスが認識されない
USBケーブルを抜き差ししたら直った
Open Targetでポート番号が使用済みだと怒られる
Vivadoを再起動したり、Ubuntuを再起動したりしたら直った
参考資料
https://reference.digilentinc.com/vivado/installing-vivado/start
https://reference.digilentinc.com/vivado/getting_started/start